<?php

require_once dirname(__FILE__) . '/BaseDAO.php';

/**
 * Classe regroupant tous les appel a la base de donnée
 * en relation avec le modèle Mot
 * @author julien
 *
 */
class DAOMot extends BaseDAO {

    /**
     * Constructeur de la classe DAOMot
     */
    public function __construct() {
        parent::__construct();
    }

    /**
     * Renvoi un mot séléctionné au hasard dans
     * la base de donnée
     */
    public function getMot() {
        try {
            $tableauId = array();

            $requete = "SELECT * FROM mot WHERE statut='1' ORDER BY RAND() LIMIT 1";
            $resultats = $this->connection->query($requete);

            if ($ligne = $resultats->fetch()) {
                $oMot = new Mot($ligne);
                return $oMot;
            }else{
                throw new Exception("Aucun mot valide present dans la base de données");
            }
        } catch (Exception $e) {
            throw new Exception($e->getMessage());
        }
    }

    /**
     * test si un mot fr existe
     */
    public function motFRExist($mot_fr) {
        try {
            $requete = "SELECT * FROM mot WHERE fr='" . $mot_fr . "'";
            $resultats = $this->connection->query($requete);
            if ($resultats->fetch()) {
                return FALSE;
            } else {
                return TRUE;
            }
        } catch (Exception $e) {
            throw new Exception("Problème lors du test de présence dans la
            base d'un mot français.");
        }
    }

    /**
     * Insert un mot dans la base de donnees.
     * @param type $mot le modele "mot" a rentrer dans
     *                  la base de donnees.
     * @return type 
     */
    public function insertMot(Mot $mot) {
        try {
            $requete = "insert into mot(statut, fr, en) values('" . $mot->getStatut() . "','" . mysql_real_escape_string($mot->getFr()) . "', '" . mysql_real_escape_string($mot->getEn()) . "')";
            $result = $this->connection->exec($requete);
            if ($result == 1) {
                return TRUE;
            } else {
                return FALSE;
            }
        } catch (Exception $e) {
            throw new Exception("Problème lors de l'insertion du mot.\n" .
                    $e->getMessage());
        }
    }

    /**
     * Permet d'afficher tout les mots de la base
     * Affiche les mots validés par l'admin
     */
    public function getAllMot() {
        try {
            $requete = "SELECT * FROM mot ORDER BY statut,id ASC ";
            $result = $this->connection->query($requete);
            $tabMot = array();
            while ($ligne = $result->fetch()) {
                $tabMot[] = new Mot($ligne);
            }
            $result->closeCursor();
            return $tabMot;
        } catch (Exception $e) {
            throw new Exception("Problème lors de l'affichage des mots");
        }
    }

    public function getMotSug() {
        try {
            $requete = "SELECT * FROM mot WHERE statut=0";
            $result = $this->connection->query($requete);
            $tabMot = array();
            while ($ligne = $result->fetch()) {
                $tabMot[] = new Mot($ligne);
            }
            $result->closeCursor();
            return $tabMot;
        } catch (Exception $e) {
            throw new Exception("Problème lors de l'affichage des mots suggérés");
        }
    }

    public function supprimerMot(Mot $mot) {
        try {
            $requete = 'DELETE FROM mot WHERE id="' . $mot->getId() . '"';
            $result = $this->connection->exec($requete);
            return $result;
        } catch (Exception $e) {
            throw new Exception("Problème lors de la suppression");
        }
    }

    public function modifierMot(Mot $mot) {
        try {
            $requete = 'UPDATE mot SET statut='.$mot->getStatut(). ',fr="' .$mot->getFr().'",en="' .$mot->getEn(). '" WHERE id="' . $mot->getId() . '"';
            $result = $this->connection->exec($requete);
            return $result;
        } catch (Exception $e) {
            throw new Exception("Problème lors de la modification du mot");
        }
    }
}

?>